package edu.ucsd.arcum; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart; import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.progress.UIJob; // Facade for commonly-done operations in Eclipse public class EclipseUtil { public static Shell getShell() { IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); if (activeWorkbenchWindow != null) { return activeWorkbenchWindow.getShell(); } return null; } public static List<IProject> getOpenProjects() { IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); IProject[] projects = root.getProjects(); ArrayList<IProject> openProjects = new ArrayList<IProject>(); for (IProject element: projects) { if (element.isOpen()) { openProjects.add(element); } } return openProjects; } public static void refreshPackageExplorer() { UIJob job = new UIJob("Refresh Package Explorer") { @Override public IStatus runInUIThread(IProgressMonitor monitor) { PackageExplorerPart explorer; explorer = PackageExplorerPart.getFromActivePerspective(); if (explorer != null) { explorer.getTreeViewer().refresh(); } return Status.OK_STATUS; } }; job.schedule(); } }